Jak pridat v runtime pocitany sloupecek do komponenty TIBQuery

Otázka od: Tomas Krejzek

25. 10. 2004 13:02

Ahoj, pokousim se pridat do TIBQuery calculated sloupecek, bohuzel se to
stale nedari, vytvorim si objekt TStringField, nastavim jej(jmeno,
velikost, ze je calculated) a pridam do Query pomoci metody Add
vlastnosti Fields.

Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.

Diky moc, Tomas



Odpovedá: Ludek Finstrle

25. 10. 2004 13:30

> Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
> prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
> ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
> odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.

Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
po teto definici provest DataSet.Open.
Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
pochopis, jak to vlastne funguje.

Luf


Odpovedá: Tomas Krejzek

25. 10. 2004 14:18

Hmmm, to jsem delal cely dopoledne
tedy ja to delal pres
IBQuery->FieldDefs->AddFieldDef
bohuzel to nefungovalo, a pozdejs jsem si v helpu precetl ze to ma
vyznam pouze kdyz vytvaris databazi, jinak je to k prdu.
Pravda nezkousel jsem zavrit a otevrit dataset, bohuzel netusim jak se k
nemu dostanu, snad jen v TIBDatabase je objekt DataSet.
Ale dik moc.
Tom

Ludek Finstrle napsal(a):

>>Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
>>prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
>>ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
>>odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
>>
>>
>
>Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
>po teto definici provest DataSet.Open.
>Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
>pochopis, jak to vlastne funguje.
>
>Luf
>
>
>
>
>
>


Odpovedá: Lauko Stefan

25. 10. 2004 17:57

Ahoj,

var
 F:TField;
begin
IBQuery1.Open;
IBQuery1.Close;
F:= DefaultFieldClasses[ftString].Create(IBQuery1.Owner);
F.FieldName:='xxx';
F.Name:= 'yyyy';
F.Size:= 20;
F.FieldKind:=fkCalculated;
F.DataSet:= IBQuery1;
IBQuery1.Open;
end;





Lauko


Odpovedá: Tomas Krejzek

26. 10. 2004 8:20

Ahojda
Moc moc dik, ja to pisu v C++ builderu, takze je to trosku jinak:

DB_4QueryFName = new TStringField((TComponent *) DB_4Query);
DB_4QueryFName->FieldName = "FNAME";
DB_4QueryFName->DisplayLabel = "FName";
DB_4QueryFName->FieldKind = fkCalculated;
DB_4QueryFName->Size = 30;
DB_4QueryFName->DataSet = DB_4Query;

to kdyby nahodou mel nekdo podobny problem jako ja  
Tomas

Lauko Stefan napsal(a):

>Ahoj,
>
>var
> F:TField;
>begin
>IBQuery1.Open;
>IBQuery1.Close;
>F:= DefaultFieldClasses[ftString].Create(IBQuery1.Owner);
>F.FieldName:='xxx';
>F.Name:= 'yyyy';
>F.Size:= 20;
>F.FieldKind:=fkCalculated;
>F.DataSet:= IBQuery1;
>IBQuery1.Open;
>end;
>
>
>
>
>
>Lauko
>
>
>
>
>
>
>